vlwkaos' digital garden

JavaScript - Execution Context

JavaScript가 처음 실행될 때 JavaScript Engine은 Global Execution Context를 만든다. 만들어지는 동안 다음 과정을 수행한다.

생성 단계

  • 전역 객체를 생성한다. 브라우저의 window 혹은 Node.js의 global
  • this에 전역객체를 bind한다.
  • 변수와 함수에 대한 참조를 담고있는 Memory Heap을 준비한다.
  • 함수 선언을 Memory Heap에 올리고, 전역에 선언된 변수를 undefined로 초기화한다.

실행 단계

  • 코드를 한줄 한줄 실행하며, 변수를 초기화하고 함수를 실행한다.

  • 함수가 실행될 때마다 Function Execution Context가 생성된다.

  • Function Execution Context는 전역 객체 대신에 arguments 오브젝트를 생성한다.

  • arguments 오브젝트는 넘어온 인자에 대한 참조를 가지고있고, 실행 단계전에 모두 undefined로 초기화한다.

  • this의 binding도 이뤄진다. 자세한 내용은 [[JavaScript - this]]를 참조하자.

  • 각 Execution Context를 관리하기 위해 Call Stack 자료 구조를 사용한다.

  • JavaScript Execution Context

JavaScript - Execution Context